"""
输入      输出
abcd = (abcd)**1
aaaa =a**4
ababab = (ab)**3

输入 aaaa 输出 4
输入 abcdabcd 输出 2
输入 ababab 输出 3
输入 abcd 输出 1

应用
假设你获得一个周期信号的取样结果，需要找到该信号的最短周期。
此问题可以简化为确定一个最短周期，使得输入内容总是这一最短周期的多次重复
"""
"""
定义
设一个字符串 x，找到一个最大整数 k，使得存在一个字符串 y，令 x = y ** k。
这里 y 的 k 次幂被定义为字符串 y 拼接 k 次。问题至少有一个结果，因为 x = x ** 1。

解 k 除以长度 m 等于 x，同时对于 p = m / k，x 中每个字符都应该与下标较远的字符 p 相等，
此时 x 被视为圆周字符串。
在圆周字符串 x 中，最后一个字符串之后的字符被定义为字符串 x 的第一个字符。
转动一次字符串 x 会把其第一个字符删掉，并将该字符添加到字符串尾部。当转动操作的
执行次数等于字符串 x 中的字符个数时，字符串 x 变换后仍是字符串 x。
"""


def powerstring(x):
    return len(x) // (x + x).find(x, 1)


print(powerstring("aaaa"))
print(powerstring("abcdabcd"))
print(powerstring("ababab"))
print(powerstring("abcd"))
